.TITLE DRFEA .IDENT /01.03/ ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED ; AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE ; AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS ; SOFTWARE OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR ; OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. NO TITLE TO AND ; OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERED. ; ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL ; EQUIPMENT CORPORATION. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ; ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL. ; ; T. M. MARTIN 16-JUL-82 ; ; MODIFIED FOR RSX-11M-PLUS V3.0 BY: ; ; B. S. MCCARTHY ; ; MODIFIED FOR RSX-11M-PLUS V3.0 UPDATE B BY: ; ; B. S. MCCARTHY 9-JUL-86 01.02 ; ; BM371 - FIX MAJOR MINDSET PROBLEM ; ; B. S. MCCARTHY 28-JUL-86 01.03 ; ; BM372 - FIX MINOR MINDSET PROBLEM IN BM371 ; ;+ ; **-$DRFEA-TEST FEATURE MASK DIRECTIVE ; ; THIS DIRECTIVE WILL TEST FOR THE PRESENCE OF A SPECIFIED FEATURE. ; ; DPB FORMAT: ; ; WD 00. -- DIC=177 , DPB SIZE=2 ; WD 01. -- FEATURE TO TEST ; ; INPUTS: ; ; R2=ADDRESS OF SECOND STATUS WORD OF CURRENT TASK ; R3=POINTER TO WORD 1 IN THE DPB ; R4=ADDRESS OF THE HEADER OF THE CURRENT TASK ; R5=ADDRESS OF THE TCB OF THE CURRENT TASK ; ; OUTPUTS: ; ; C=0 IF DIRECTIVE WAS SUCCESSFULLY COMPLETED. ; DIRECTIVE STATUS OF IS.SET 'D.RS22' IS RETURNED IF THE ; CORRESPONDING FEATURE MASK BIT IS SET. ; DIRECTIVE STATUS OF IS.CLR 'D.RS00' IS RETURNED IF THE ; CORRESPONDING FEATURE MASK BIT IS NOT SET. ; ; IF A FEATURE VALUE IS SPECIFIED FOR WHICH THERE ; IS NO FEATURE MASK WORD IS.CLR IS RETURNED WHICH ; PRESUMABLY WOULD INDICATE THAT THE SUPPORT IS NOT ; PRESENT. ;- .IF DF R$$FEA $DRFEA:: MOV #$FMASK,R0 ;ASSUME TEST ON SYSTEM FEATURE MASK ;WORDS AS OPPOSED TO THE HARWARE FEATURE ;MASK WORDS. MOV (R3),R1 ;GET FEATURE TO TEST FOR MOV #$FMEND-$FMASK,R3 ;GET # OF SYSTEM MASK WORDS TST R1 ;WAS IT A HARWARE FEATURE? BPL 10$ ;IF PL NOT A HARDWARE FEATURE MASK TEST MOV #$HFMSK,R0 ;POINT TO HARDWARE FEATURE MASK WORDS MOV #$HFEND-$HFMSK,R3 ;GET # OF HARDWARE MASK WORDS NEG R1 ;NEGATE SPECIFIED FEATURE TO TEST FOR 10$: DEC R1 ;NORMALIZE BIT VALUE TO BASE OF 0 MOV R1,R2 ;SAVE FOR OFFSET COMPUTATIONS LATER BIC #^C<17>,R1 ;MASK OFF ALL BUT BIT IDENTIFIER BITS ASL R1 ;CONVERT IT TO A WORD OFFSET MOV $BTMSK(R1),R1 ;GET BIT TO TEST FOR ASH #-4,R2 ;COMPUTE OFFSET TO FEATURE WORD TO TEST ASL R2 ; CMP R2,R3 ;BEYOND LIMIT OF MASK WORDS? BHI 40$ ;IF HI YES, ASSUME SUPPORT NOT PRESENT ADD R2,R0 ;FORM ADDRESS OF FEATURE WORD TO TEST BIT R1,(R0) ;IS FEATURE PRESENT BEQ 40$ ;IF EQ, NO DRSTS D.RS22 ;RETURN IS.SET 40$: DRSTS D.RS00 ;RETURN IS.CLR .ENDC ;R$$FEA ;+ ; **-$DRTFE-TEST TASK FEATURE DIRECTIVE ; ; THIS DIRECTIVE WILL TEST FOR THE PRESENCE OF A SPECIFIED TASK FEATURE. ; ; (AT THE MOMENT, THIS DIRECTIVE CAN ONLY CHECK BITS IN T.STS -> T.ST4 ; OF THE TCB. THE DIRECTIVE COULD BE EXPANDED TO CHECK OTHER BINARY ; TASK FEATURES, SUCH AS PRESENCE OR ABSENCE OF A PARTICULARS AST, ETC.) ; ; DPB FORMAT: ; ; WD 00. -- DIC=209., DPB SIZE=2 ; WD 01. -- FEATURE TO TEST ; ; INPUTS: ; ; R2=ADDRESS OF SECOND STATUS WORD OF CURRENT TASK ; R3=POINTER TO WORD 1 IN THE DPB ; R4=ADDRESS OF THE HEADER OF THE CURRENT TASK ; R5=ADDRESS OF THE TCB OF THE CURRENT TASK ; ; OUTPUTS: ; ; C=0 IF DIRECTIVE WAS SUCCESSFULLY COMPLETED. ; DIRECTIVE STATUS OF IS.SET 'D.RS22' IS RETURNED IF THE ; CORRESPONDING FEATURE MASK BIT IS SET. ; DIRECTIVE STATUS OF IS.CLR 'D.RS00' IS RETURNED IF THE ; CORRESPONDING FEATURE MASK BIT IS NOT SET. ; ; IF A FEATURE VALUE IS SPECIFIED FOR WHICH THERE ; IS NO FEATURE MASK WORD IS.CLR IS RETURNED WHICH ; PRESUMABLY WOULD INDICATE THAT THE SUPPORT IS NOT ; PRESENT. ;- .IF DF R$$FEA $DRTFE::MOV (R3),R1 ;GET FEATURE TO TEST FOR 10$: DEC R1 ;NORMALIZE BIT VALUE TO BASE OF 0 MOV R1,R0 ;SAVE FOR OFFSET COMPUTATIONS LATER BIC #^C<17>,R1 ;MASK OFF ALL BUT BIT IDENTIFIER BITS ASL R1 ;CONVERT IT TO A WORD OFFSET MOV $BTMSK(R1),R1 ;GET BIT TO TEST FOR ASH #-4,R0 ;COMPUTE OFFSET TO FEATURE WORD TO TEST ASL R0 ; CMP R0,#T.ST3-T.ST2 ;BEYOND FIRST THREE MASK WORDS? BLOS 35$ ;IF LOS NO, OFFSET OK AS IS CMP R0,#T.ST3+2-T.ST2 ;BEYOND FOURTH MASK WORD? BHI 40$ ;IF HI YES, ASSUME SUPPORT NOT PRESENT ADD #T.ST4-,R0 ;ADJUST TO SECOND MASK WORD 35$: ADD R0,R2 ;FORM ADDRESS OF FEATURE WORD TO TEST BIT R1,(R2) ;IS FEATURE PRESENT BEQ 40$ ;IF EQ, NO DRSTS D.RS22 ;RETURN IS.SET 40$: DRSTS D.RS00 ;RETURN IS.CLR .ENDC ;R$$FEA .END